Kelompok 4_Praktikum_Pekan 8

Angga Fathan Rofiqy

07 April, 2024

Code/Syntax : File.rmd

Kelompok 4 Pararel 2

Nama NIM
Angga Fathan Rofiqy G1401211006
Gladys Adya Zafira G1401211014
Kheni Hikmah Lestari G1401211029

Bagian A

Poin 1

Bangkitkan sebaran Normal, Seragam, dan Eksponensial dengan ukuran contoh 2, 5, 25

Berikut merupakan hasil pembangkitan masing-masing serbaran dengan ukuran contoh 2, 5, 25:

Normal

set.seed(361)
sample_size <- c(2, 5, 25)

norm_samples <- lapply(sample_size, function(n) rnorm(n))

print(norm_samples)
## [[1]]
## [1] 0.3615598 0.7018046
## 
## [[2]]
## [1] -0.52680508  0.07266901  0.05243838 -1.15092763  1.09613386
## 
## [[3]]
##  [1] -0.06223967  0.33424346  1.14872339 -0.58187795 -0.74961697  0.91041084
##  [7]  1.11742996 -0.41882087 -0.90762722  1.97003011 -1.90834373  0.54295418
## [13] -0.34584438  0.64434620 -0.19872338  1.15407082  1.45305346 -2.08842349
## [19]  0.45829855 -0.36677537 -1.18484629 -0.30731180  1.59718792 -0.05882862
## [25]  1.42134857

Sebaran Normal dengan ukuran contoh (n) 2, 5, 25

Seragam

set.seed(361)
unif_samples <- lapply(sample_size, function(n) runif(n))

print(unif_samples)
## [[1]]
## [1] 0.6411595 0.4234989
## 
## [[2]]
## [1] 0.7585995 0.5017770 0.2991645 0.6694086 0.5289652
## 
## [[3]]
##  [1] 0.64223494 0.52091031 0.35643748 0.12488101 0.73423608 0.86348990
##  [7] 0.69046701 0.47518599 0.59805178 0.63090208 0.04110236 0.87466497
## [13] 0.17958752 0.28032445 0.46865077 0.22674271 0.80925265 0.81869706
## [19] 0.13681490 0.86809473 0.91256821 0.33767353 0.65252263 0.18203760
## [25] 0.78822457

Sebaran Seragam dengan ukuran contoh (n) 2, 5, 25

Eksponensial

set.seed(361)
exp_samples <- lapply(sample_size, function(n) rexp(n))

print(exp_samples)
## [[1]]
## [1] 0.282319 1.040952
## 
## [[2]]
## [1] 0.88980511 0.33881711 0.05793049 0.28446987 0.04182061
## 
## [[3]]
##  [1] 1.118897096 2.408815370 0.196103564 0.261804162 3.087864362 0.124480583
##  [7] 0.850313252 0.637394117 1.480813568 0.234057453 0.305045266 1.842595186
## [13] 0.576449139 0.008035913 0.412838649 0.311016965 1.152066513 0.291981015
## [19] 0.062473743 0.184011496 2.830951527 3.642044907 1.189495783 0.353262031
## [25] 0.247379575

Sebaran Eksponensial dengan ukuran contoh (n) 2, 5, 25

Poin 2

Buat histogram dari rataan contohnya

# Menghitung rata-rata dari masing-masing sampel
norm_means <- sapply(norm_samples, mean)
unif_means <- sapply(unif_samples, mean)
exp_means <- sapply(exp_samples, mean)

Rata-rata contoh masing-masing sebaran:

Normal

print(norm_means)
## [1]  0.53168218 -0.09129829  0.14291271

Seragam

print(unif_means)
## [1] 0.5323292 0.5515829 0.5285502

Eksponensial

print(exp_means)
## [1] 0.6616357 0.3225686 0.9524076

Histogram dari rata-rata contoh

par(mfrow = c(1, 3))
hist(norm_means, main = "Histogram Mean Normal", 
     xlab = "Rata-rata", ylab = "Frekuensi", col = "#8DC16D")
hist(unif_means, main = "Histogram Mean Seragam", 
     xlab = "Rata-rata", ylab = "Frekuensi", col = "#4493CA")
hist(exp_means, main = "Histogram Mean Exponensial", 
     xlab = "Rata-rata", ylab = "Frekuensi", col = "#D44155")

Poin 3

Buat normal qq-plot dari masing-masing n

par(mfrow = c(1, 3))
qqnorm(norm_means, main = "Normal QQ Plot", col = "#8DC16D", lwd = 7,
       xlab = "Theoretical Quantiles", ylab = "Sample Quantiles")
qqline(norm_means, col = "red", lwd=2)

qqnorm(unif_means, main = "Uniform QQ Plot", col = "#4493CA", lwd = 7,
       xlab = "Theoretical Quantiles", ylab = "Sample Quantiles")
qqline(unif_means, col = "red", lwd=2)

qqnorm(exp_means, main = "Exponensial QQ Plot", col = "#D44155", lwd = 7,
       xlab = "Theoretical Quantiles", ylab = "Sample Quantiles")
qqline(exp_means, col = "red", lwd=2)

Bagian B

Poin 1

Bangkitkan dua gugus data

  1. Data dari sebaran Normal

  2. Data campuran:

    • 50% dari sebaran normal + 50% dari sebaran chi-square

    • 50% sebaran chi-square dengan paramenter a + 50% sebaran chi-square dengan paramenter b

    • 25% sebaran chi-square dengan parameter a + 25% sebaran chi-suqare dengan parameter b + 25% sebaran normal dengan paramater a + 25% sebaran normal parameter b

Normal

set.seed(361)
norm_data <- rnorm(1000, mean = 0, sd = 1)
hist(norm_data, main = "Histogram Normal", 
     xlab = "Nilai", ylab = "Frekuensi", col = "#4664AF")

Campuran 1

50% dari sebaran normal + 50% dari sebaran chi-square

set.seed(361)
csq_data <- rchisq(1000, df = 1)
mixed_data_1 <- c(norm_data[1:500], csq_data[1:500])
hist(mixed_data_1, main = "Histogram Campuran 1", 
     xlab = "Nilai", ylab = "Frekuensi", col = "#9F4274")

Campuran 2

50% sebaran chi-square dengan paramenter a + 50% sebaran chi-square dengan paramenter b

set.seed(361)
csq_data_a <- rchisq(500, df = 1)
csq_data_b <- rchisq(500, df = 2)
mixed_data_2 <- c(csq_data_a, csq_data_b)
hist(mixed_data_2, main = "Histogram Campuran 2", 
     xlab = "Nilai", ylab = "Frekuensi", col = "#66C8CC")

Campuran 3

25% sebaran chi-square dengan parameter a + 25% sebaran chi-suqare dengan parameter b + 25% sebaran normal dengan paramater a + 25% sebaran normal parameter b

set.seed(361)
norm_data_a <- rnorm(250, mean = 0, sd = 1)
norm_data_b <- rnorm(250, mean = 1, sd = 1)
mixed_data_3 <- c(csq_data_a, csq_data_b, norm_data_a, norm_data_b)
hist(mixed_data_3, main = "Histogram Campuran 3", 
     xlab = "Nilai", ylab = "Frekuensi", col = "#F8D054")

Poin 2

  1. Ambil sample dengan ukuran n = 4, 12, 20, 60, 100
  2. Buat histogram dan normal qq-plot
  3. Pada n berapa sebaran rataan dari masing-masing data mulai simeteris atau mendekati sebaran normal?
sample_sizes <- c(4, 12, 20, 60, 100)

plot_distribution <- function(data, title, color) {
  df <- data.frame(x = data)
  
  # Histogram
  p1 <- ggplot(data = df, aes(x = x)) +
    geom_histogram(bins = 20, fill = color, alpha = 1) +
    geom_density(aes(y = after_stat(count)), fill = color, alpha = 0.4) + 
    labs(title = paste0("\n\n",title)) +
    theme_minimal() +
    theme(
      plot.title = element_text(size = 22, face = "bold", hjust = 3)  
    )
  
  # QQ plot
  p2 <- ggplot(data = df, aes(sample = x)) +
    stat_qq(color = color, size =5) +
    stat_qq_line(color = "red", linewidth =2) +
    labs(title = paste0("\n\n\n\n")) +
    theme_minimal() 
  
  return(list(p1, p2))  
}

all_plots <- list()

for (size in sample_sizes) {
  samples <- list(
    "Mixed Data 1" = mixed_data_1,
    "Mixed Data 2" = mixed_data_2,
    "Mixed Data 3" = mixed_data_3
  )
  
  plots_for_size <- list()
  
  colors <- c("#4664AF", "#9F4274", "#66C8CC") 
  
  for (i in 1:length(samples)) {
    title <- names(samples)[i]
    sample <- sample(samples[[title]], size, replace = FALSE)
    plots <- plot_distribution(sample, paste0(title, " (n=", size,")"), colors[i])
    plots_for_size <- c(plots_for_size, plots)
  }
  
  all_plots <- c(all_plots, plots_for_size)
}

plot_grid(plotlist = all_plots, ncol = 6)

Dalam analisis ini, tiga jenis data campuran dieksplorasi dengan variasi ukuran sampel (n = 4, 12, 20, 60, 100), menghasilkan total 15 histogram dan 15 QQ plot. Melalui observasi visual ini, ditemukan bahwa titik di mana distribusi mulai menyerupai distribusi normal adalah ketika ukuran sampel melebihi 20, dengan pengecualian pada jenis data campuran kedua. Temuan ini secara substansial mendukung teori statistik yang dikenal sebagai teorema limit pusat. Teorema ini menyatakan bahwa, “dengan pertambahan ukuran sampel, distribusi rata-rata dari sampel yang diambil dari populasi, terlepas dari distribusi aslinya, akan cenderung mendekati distribusi normal”. Dalam literatur statistik, penekanan sering diberikan pada ukuran sampel yang besar, umumnya lebih dari 20, sebagai titik di mana pendekatan ke distribusi normal menjadi semakin akurat.